package com.unitedvision.service;

import java.util.List;

import javax.persistence.EntityNotFoundException;

import com.unitedvision.core.domain.Debitur;
import com.unitedvision.core.exception.ApplicationException;
import com.unitedvision.persistence.domain.CompanyCustomerEntity;
import com.unitedvision.persistence.domain.CompanyEntity;
import com.unitedvision.persistence.domain.OperatorEntity;
import com.unitedvision.persistence.domain.PaymentEntity;
import com.unitedvision.persistence.domain.PeriodeValue;

public interface PaymentService {
	void pay(PaymentEntity paymentEntity) throws ApplicationException;
	void companyPay(PaymentEntity paymentEntity) throws ApplicationException;
	void update(PaymentEntity paymentEntity);
	void delete(PaymentEntity paymentEntity);
	List<PaymentEntity> getAll() throws EntityNotFoundException;
	List<PaymentEntity> getByPeriode(PeriodeValue periodeValue, CompanyEntity companyEntity) throws EntityNotFoundException;
	List<PaymentEntity> getByOperator(OperatorEntity operatorEntity) throws EntityNotFoundException;
	List<PaymentEntity> getByCompanyCustomer(CompanyCustomerEntity customerEntity) throws EntityNotFoundException;
	List<PaymentEntity> getByCompany(CompanyEntity companyEntity) throws EntityNotFoundException;
	int checkDebt(Debitur debitur) throws EntityNotFoundException;
	long count();
}
